﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ORM.Business.Feedbacks;
using ORM.Business.Models.Entities;
using ORM.Business.Models;

namespace ORM.Business.Interfaces
{
	public interface IGuideRepository 
	{
        GuideListFeedback GetAllGuides();
        GuideListFeedback GetSimilarGuides(int modelId, string stringToSearch);
        GuideListFeedback GetAllGuide(PageInfo pageInfo, int deviceId, int manufacturerId, int modelId, string stringToSearch, int guideTypeId);
        GuideListFeedback GetGuideDevice(int condition, PageInfo pageInfo, int deviceId, int manufacturerId, int modelId);
        GuideListFeedback GetGuideUseful(PageInfo pageInfo, int deviceId, int manufacturerId, int modelId, string stringToSearch, int guideTypeId);
       
        Feedback<Guide> InsertGuide(Guide guide);
        Feedback<Guide> UpdateGuide(Guide guide);
        Feedback DeleteGuide(int id);
        Feedback<Guide> VoteGuide(int GuideId, int userId);
        Feedback<Guide> DeleteAnComment(int guideId);
        Feedback<GuideComment> UpdateGuideComment(GuideComment comment);

        Feedback<Guide> ReportGuide(int guideId, string reason, int userId);
        Feedback<IList<Guide>> GetAllReportedGuide(int minReportNumber);
        Feedback<IList<ReportedGuide>> GetReportedGuideDetails(int id);
        Feedback DeleteReportedGuide(int id);
        Feedback DeleteFalseReports(int id);

        Feedback<IList<Guide>> GetTopNewGuides();
        Feedback<IList<Guide>> GetAllUnapprovedGuides();
        Feedback<IList<Guide>> GetAllApprovedGuides();
        Feedback ApproveGuide(int id);
        Feedback DisApproveGuide(int id);
        Feedback UnapproveGuide(int id);

        Feedback<Guide> AddBookmarkAnGuide(int guideId, int userId);
        GuideListFeedback GetGuideBookmarks(int userId, PageInfo pageInfo);
        Feedback<IList<Guide>> GetGuideBookmarks(int userId);

        
	}
}